home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programmer's Power Pack / Delphi Volume 1.iso / e_to_l / edsspell / memoutil.pas < prev    next >
Pascal/Delphi Source File  |  1996-09-15  |  2KB  |  48 lines

  1. (* MEMOUTIL.PAS - Copyright (c) 1995-1996, Eminent Domain Software *)
  2.  
  3. unit MemoUtil;
  4.   {-Memo simple memo functions}
  5. interface
  6. uses
  7.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  8.   Forms, Dialogs, StdCtrls, Buttons, Menus, ExtCtrls;
  9.  
  10. function Memo_CursorPos (AMemo: TMemo): TPoint;
  11.   {-returns the cursor position in row, column}
  12. function Memo_WhereY (AMemo: TMemo): Integer;
  13.   {-returns the screen absolute y position of the highlighted word}
  14.  
  15. implementation
  16.  
  17. function Memo_CursorPos (AMemo: TMemo): TPoint;
  18.   {-returns the cursor position in row, column}
  19. var
  20.   Col:      integer;
  21.   Row:      integer;
  22.   RowStart: integer;
  23. begin
  24.   Row      := SendMessage(AMemo.Handle, EM_LINEFROMCHAR, $FFFF, 0);
  25.    {-returns the line number of the cursor position}
  26.   RowStart := SendMessage(AMemo.Handle, EM_LINEINDEX, $FFFF, 0);
  27.     {-returns the index of the start of the line within the buffer}
  28.   Col      := AMemo.SelStart - RowStart;
  29.   Result   := Point (Col, Row);
  30. end;  { Memo_CursorPos }
  31.  
  32. function Memo_WhereY (AMemo: TMemo): Integer;
  33.   {-returns the screen absolute y position of the highlighted word}
  34. var
  35.   CursorPos:  TPoint;
  36.   AbsMemoXY:  TPoint;
  37.   TopLine:    Integer;
  38.   Height:     Integer;
  39. begin
  40.   TopLine   := SendMessage (AMemo.Handle, EM_GETFIRSTVISIBLELINE, 0, 0);
  41.   CursorPos := Memo_CursorPos (AMemo);
  42.   AbsMemoXY := AMemo.ClientToScreen (Point (0, 0));
  43.   Height    := Abs (Round (AMemo.Font.Height * (AMemo.Font.PixelsPerInch/72)));
  44.   Result    := AbsMemoXY.Y + ((CursorPos.Y - TopLine) * Height);
  45. end;  { Memo_WhereY }
  46.  
  47. end.  { MemoUtil }
  48.